// 提供复用逻辑的函数(钩子)
/**
 * 数据懒加载函数
 *  @param {Element} target - DOM对象
 *  @param {Function} apiFn - api函数
*/
import { useIntersectionObserver } from '@vueuse/core'
import { ref, onUnmounted } from 'vue'
import dayjs from 'dayjs'
import { useIntervalFn } from '@vueuse/shared'
export const useLayzyData = (target, apiFn) => {
  // stop停止观察
  const result = ref([])
  const { stop } = useIntersectionObserver(
    // 监听的目标元素
    target,
    ([{ isIntersecting }], observerElement) => {
      //   isIntersecting是否进入可视区
      if (isIntersecting) {
        stop()
        // 调用API函数获取数据
        apiFn().then(data => {
          result.value = data.result
        })
      }
    },
    // 配置选型
    {
      threshold: 0 // 只要相交的比例大于0就触发
    }
  )
  return result
}
/**
 * 支付倒计时函数
 * @param {Integer} countdown  -倒计时秒数
 */
export const usePayTime = () => {
// 倒计时函数
  const time = ref(0)
  const timeText = ref('')
  const { pause, resume } = useIntervalFn(() => {
    time.value--
    timeText.value = dayjs.unix(time.value).format('mm分ss秒')
    if (time.value <= 0) {
      pause()
    }
  }, 1000, false)

  onUnmounted(() => {
    pause()
  })
  // 开启定时器
  const start = (countdown) => {
    time.value = countdown
    timeText.value = dayjs.unix(time.value).format('mm分ss秒')
    resume()
  }
  // 开启定时器
  return {
    start,
    timeText
  }
}
